package com.ego.dubbo.service.impl;

import com.ego.commons.exception.DaoException;
import com.ego.dubbo.service.TbItemParamDubboService;
import com.ego.mapper.TbItemParamMapper;
import com.ego.pojo.TbItemParam;
import com.ego.pojo.TbItemParamExample;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

/**
 *   商品规格表查询
 */

@Service
public class TbItemParamDubboServiceImpl implements TbItemParamDubboService {

    @Autowired
    private TbItemParamMapper tbItemParamMapper;

    /**
     * 分页
     * @param pageNum
     * @param pageSize
     * @return
     */
    @Override
    public List<TbItemParam> selectByPage(int pageNum, int pageSize) {
        // 分页设置
        PageHelper.startPage(pageNum, pageSize);
        //投影查询 如果查询结果包含text类型列  那么用WithBlobs方法  查询全部
        List<TbItemParam> list = tbItemParamMapper.selectByExampleWithBLOBs(null);
        //对Page<E>结果进行包装
        PageInfo<TbItemParam> pi=new PageInfo<>(list);

        return pi.getList();
    }

    /**
     * 查询总条数
     * @return
     */
    @Override
    public long selectCount() {
        return tbItemParamMapper.countByExample(null);
    }

    /**
     * 根据目录id 查询参数规格
     * @param catId  目录id
     * @return
     */
    @Override
    public TbItemParam selectByCatId(long catId) {
        TbItemParamExample example = new TbItemParamExample();
        example.createCriteria().andItemCatIdEqualTo(catId);
        List<TbItemParam> list = tbItemParamMapper.selectByExampleWithBLOBs(example);
        if (list!=null&&list.size()==1){
            return list.get(0);
        }
        return null;
    }

    /**
     * 新增规格参数表
     * @param tbItemParam
     * @return
     */
    @Override
    public int insert(TbItemParam tbItemParam) {

        return  tbItemParamMapper.insert(tbItemParam);
    }

    /**
     * 批量删除操作
     * @param ids
     * @return
     * @throws DaoException
     */
    @Override
    public int delete(long[] ids) throws DaoException {
        int index=0;
        for (long id : ids) {
           index+= tbItemParamMapper.deleteByPrimaryKey(id);
        }
        if (index==ids.length){
            return 1;
        }
        throw new DaoException("批量删除失败!");
    }
}
